# Contributing

This project would not exist without all of its users and [contributors][1].

If you have ideas on how to make the configuration easier to maintain or
improve its performance, do not hesitate to fork and send pull requests.

Rather than contributing to this repo, please contribute to the upstream
on GitHub.

### Issue Reporting

   - Check that the issue has not already been reported (also upstream).
   - Check that the issue has not already been fixed in the latest code.
   - Open an issue with a clear title and description in grammatically correct,
     complete sentences.

## Pull Request

- Read [how to properly contribute to open source projects on GitHub][2].
- Use a topic branch to easily amend a pull request later, if necessary.
- Write [good commit messages][3].
- Squash commits on the topic branch before opening a pull request.
- Use the same coding style and spacing.
- Open a [pull request][4] that relates to but one subject with a clear title
  and description in grammatically correct, complete sentences.

### Code Style

This project follows the [Google Shell Style Guide][5] when possible. However,
there are a number of additional things to keep in mind.

- Local variables should be used whenever possible.
- Prefer `zstyle` over environment variables for configuration.
- Prefer (( ... )) over [[ ... ]] for arithmetic expression.
- Use the function keyword to define functions.
- The 80 character hard limit can be waived for readability.

### Using an Alternative *zprezto* Directory

To work on Prezto without affecting your current configuration:

```sh
mkdir devel-zprezto
cd devel-zprezto
git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto
ZDOTDIR=$(pwd)
echo "Your development ZDOTDIR is $ZDOTDIR"
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
    ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```

Then to start zsh in this development environment you will run:

```console
ZDOTDIR=/path/to/devel-zprezto zsh
```

### Modules

- A *README.md* must be present.
- Large functions must be placed in a *functions* directory.
- Functions that take arguments must have completion.

### Themes

- A screenshots section must be present in the file header.
- The pull request description must have [embedded screenshots][6].

[1]: https://github.com/sorin-ionescu/prezto/contributors
[2]: https://gun.io/blog/how-to-github-fork-branch-and-pull-request
[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
[4]: https://help.github.com/articles/using-pull-requests
[5]: https://google.github.io/styleguide/shell.xml
[6]: https://github.github.com/gfm/#images
